Embodiments of the present invention relate generally to haptic feedback interface devices used with a host computer system, and more particularly to data filters for haptic feedback interface devices.
Common human-computer interface devices used for interaction with a computer system or electronic device include a mouse, joystick, trackball, gamepad, steering wheel, stylus, tablet, pressure-sensitive sphere, knob, or the like. In some haptic feedback interface devices, kinesthetic force feedback and/or tactile feedback are also provided to the user, more generally known collectively herein as “haptic feedback.” These types of interface devices can provide physical sensations that are felt by the user manipulating a manipulandum of the interface device, such as a joystick handle, mouse button, knob, etc., the interface device's housing, or other element of the interface device in haptic contact with the user. One or more motors or other actuators can be coupled to the interface device housing or manipulandum and are in communication with a controlling host computer system. The host computer system controls forces and/or resistance on the manipulandum and/or housing in conjunction and coordinated with events and interactions by sending control signals or commands to the actuators of the interface device.
Most haptic feedback applications rely on a high-bandwidth communication link between the haptic feedback interface device and the host computer system. For example, a full-speed Universal Serial Bus (USB) Human Interface Device (HID) class device generally has a bandwidth of up to 64 kbytes/sec., which is more than sufficient for many haptic applications. In low speed USB devices which have cheaper controllers, however, the communication link may have less bandwidth.
In existing software applications, the haptic feedback data created by the application program gets transferred through the driver software to the haptic feedback interface device. When a haptic feedback application program requiring high-bandwidth communications is used to interface with a lower-bandwidth haptic feedback interface device, a communication bottleneck is often created and the application spends more time waiting for each data to complete its transmission, thereby slowing down the application's overall performance. Data get queued and the queue grows, in some instances causing a system halt or crash when the queue count grows too large. In other instances, the outgoing pipe may get filled up and never empty.
The application program's displayed frame rate (or update rate) and/or overall performance may suffer due to the program's inability to cope with the low-bandwidth communications link. Inefficiencies, poor haptic effects, or lost data can also occur in implementations having high bandwidth but low processing power on the haptic feedback interface device, e.g., the data is received at too great a rate for a processor or circuit on the device to handle properly.